//package com.songjia.ribbon.service.impl;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.client.RestTemplate;
//
//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
//import com.songjia.ribbon.service.RibbonService;
//
///**
// * 
// * 
// * @Description: Ribbon测试service
// *
// * @author: songjia
// * @date: 2018年2月7日 上午11:23:16
// */
//@Service
//public class RibbonServiceImpl implements RibbonService {
//
//	@Autowired
//	private RestTemplate restTemplate;
//
//	/*
//	 * 方法上加上@HystrixCommand注解。该注解对该方法创建了熔断器的功能，并指定了fallbackMethod熔断方法，熔断方法直接返回了一个字符串
//	 * ，字符串为”hi,”+name+”,sorry,error!”，代码如下：
//	 */
//	@HystrixCommand(fallbackMethod = "helloError")
//	@Override
//	public String helloService(String name) {
//		/*
//		 * 写一个测试类TestService，通过之前注入ioc容器的restTemplate来消费eureka-client服务的“/hello”接口 ，
//		 * 在这里我们直接用的服务名替代了具体的url地址 ，在ribbon中它会根据服务名来选择具体的服务实例，根据服务实例在请求的时候会用具体的url替换掉服务名
//		 */
//		// 当我们通过调用restTemplate.getForObject(“http://EUREKA-CLIENT/hello?name=“+name, String.class)方法时，已经做了负载均衡，访问了不同的端口的服务实例。
//		return this.restTemplate.getForObject("http://EUREKA-CLIENT/hello?name=" + name, String.class);
//	}
//
//	/**
//	 * 这就说明当
//	 * EUREKA-CLIENT服务不可用的时候，service-ribbon调用EUREKA-CLIENT服务的API接口时，会执行快速失败，直接执行下述方法返回一组字符串，而不是等待响应超时，这很好的控制了容器的线程阻塞
//	 * 
//	 * @param name
//	 * @return
//	 */
//	public String helloError(String name) {
//		return "hello, " + name + ",sorry,error!";
//	}
//
//}
